package day1_array.leetcode;

/**
 * @author yuisama
 * @date 2022/11/10 14:59
 * 消失的数字
 **/
public class Num17_04_MissingNumber {
    // 1.哈希法
//    public int missingNumber(int[] nums) {
//        // 创建一个大小为n + 1的布尔数组
//        boolean[] hash = new boolean[nums.length + 1];
//        // 遍历原数组，将每个出现元素映射到hash数组中
//        for (int num : nums) {
//            hash[num] = true;
//        }
//        // 遍历哈希数组，找到那个缺失的元素
//        for (int i = 0; i < hash.length; i++) {
//            if (!hash[i]) {
//                return i;
//            }
//        }
//        return -1;
//    }
    // 2.数学求和
    public int missingNumber(int[] nums) {
        // 从0到n本来的数字之和
        int respect = ((nums.length) * (nums.length + 1)) >> 1;
        // 实际的数字之和
        int actual = 0;
        for (int i : nums) {
            actual += i;
        }
        // 缺失的数字就是期望值 - 实际值
        return respect - actual;
    }
}